/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package utilitario;

import br.edu.unipampa.campeonato.MercadoDeTransferencias;
import br.edu.unipampa.clube.Clube;
import br.edu.unipampa.clube.Jogador;
import br.edu.unipampa.clube.Tecnico;
import java.util.ArrayList;

/**
 *
 * @author Antoni
 * @author Gean
 * 
 */
public class InicializadorDeObjetos {

    private ArrayList<Clube> clubes; // ArrayList de todos os clubes do jogo
    private MercadoDeTransferencias mercado; // atributo para que um jogador seja inserido no mercado de transferencia

    /*
     * Método construtor que instacia os clubes e
     * adiciona-os a um ArrayList de Clubes.
     */
    public InicializadorDeObjetos() {
        mercado = new MercadoDeTransferencias();
        clubes = new ArrayList<Clube>();
        clubes.add(criaBarcelona());
        clubes.add(criaRealMadrid());
        clubes.add(criaAtleticoDeMadrid());
        clubes.add(criaValencia());
        clubes.add(criaRealSociedad());
        clubes.add(criaVillaReal());
        clubes.add(criaRealBetis());
        clubes.add(criaOsasuna());
    }

    /*
     * Método responsável por criar o Clube Barcelona,
     * desde seus jogadores titulares e reservas,
     * incluindo o técnico e o clube em si
     * retorna o Clube Criado. 
     */
    private Clube criaBarcelona() {
        // criação dos jogadores
        Jogador valdes = new Jogador("Victor Valdes", "Goleiro", "Espanhol", 87, 30, 85, 300.00, false, mercado);
        Jogador pinto = new Jogador("Pinto", "Goleiro", "Espanhol", 79, 30, 82, 200.00, false, mercado);
        Jogador pique = new Jogador("Gerard Pique", "Zagueiro", "Espanhol", 87, 62, 93, 220.00, false, mercado);
        Jogador puyol = new Jogador("Carles Puyol", "Zagueiro", "Espanhol", 92, 57, 95, 350.00, false, mercado);
        Jogador milito = new Jogador("Milito", "Zagueiro", "Espanhol", 88, 57, 86, 100.00, true, mercado);
        Jogador daniAlves = new Jogador("Daniel Alves", "Lateral", "Brasileiro", 94, 82, 65, 250.00, false, mercado);
        Jogador alba = new Jogador("Jordi Alba", "Lateral", "Espanhol", 85, 75, 62, 220.00, false, mercado);
        Jogador abidal = new Jogador("Abidal", "Lateral", "Frances", 79, 64, 76, 280.00, false, mercado);
        Jogador deulofeu = new Jogador("Deulofeu", "Meia", "Espanhol", 99, 99, 99, 650.00, false, mercado);
        Jogador adriano = new Jogador("Adriano", "Meia", "Brasileiro", 82, 75, 65, 150.00, true, mercado);
        Jogador dosSantos = new Jogador("Jonathan dos Santos", "Meia", "Mexicano", 81, 74, 71, 300.00, true, mercado);
        Jogador xavi = new Jogador("Xavi", "Meia", "Espanhol", 95, 87, 68, 450.00, false, mercado);
        Jogador iniesta = new Jogador("Iniesta", "Meia", "Espanhol", 92, 88, 62, 350.00, false, mercado);
        Jogador busquets = new Jogador("Sergio Busquets", "Meia", "Espanhol", 76, 73, 66, 250.00, false, mercado);
        Jogador mascherano = new Jogador("Javier Mascherano", "Meia", "Argentino", 78, 63, 83, 300.00, false, mercado);
        Jogador villa = new Jogador("David Villa", "Atacante", "Espanhol", 87, 96, 45, 400.00, false, mercado);
        Jogador sanchez = new Jogador("Alexis Sanchez", "Atacante", "Chileno", 72, 81, 38, 300.00, true, mercado);
        Jogador messi = new Jogador("Lionel Messi", "Atacante", "Argentino", 98, 98, 38, 600.00, false, mercado);
        Jogador pedro = new Jogador("Pedro Rodriguez", "Atacante", "Espanhol", 78, 82, 47, 320.00, true, mercado);

        // Time Tirular
        ArrayList<Jogador> titulares = addTitulares(valdes, pique, puyol, daniAlves, alba, deulofeu, xavi, iniesta, mascherano, villa, messi);
        // Time Reserva
        ArrayList<Jogador> reservas = addReservas(pinto, milito, abidal, adriano, dosSantos, busquets, sanchez, pedro);
        // Tecnico
        Tecnico guardiola = new Tecnico("Guardiola");
        // Clube
        Clube barcelona = new Clube("Barcelona", guardiola, titulares, reservas, 80000000.00);
        guardiola.setClubeQueDirige(barcelona);
        return barcelona;
    }

    /*
     * Método responsável por criar o Clube Real Madrid,
     * desde seus jogadores titulares e reservas,
     * incluindo o técnico e o clube em si
     * retorna o Clube Criado.
     */
    private Clube criaRealMadrid() {
        //Jogadores
        Jogador casillas = new Jogador("Iker Casillas", "Goleiro", "Espanhol", 93, 30, 97, 300.00, true, mercado);
        Jogador diegoLopes = new Jogador("Diego Lopes", "Goleiro", "Espanhol", 89, 30, 84, 200.00, false, mercado);
        Jogador rCarvaho = new Jogador("Ricardo Carvalho", "Zagueiro", "Português", 84, 60, 87, 220.00, false, mercado);
        Jogador pepe = new Jogador("Pepe", "Zagueiro", "Português", 85, 61, 86, 350.00, false, getMercado());
        Jogador rAlbiol = new Jogador("Raul Albiol Tortajada", "Zagueiro", "Espanhol", 81, 60, 85, 100.00, true, mercado);
        Jogador marcelo = new Jogador("Marcelo", "Lateral", "Brasileiro", 84, 87, 65, 250.00, false, mercado);
        Jogador sRamos = new Jogador("Sergio Ramos", "Lateral", "Espanhol", 83, 74, 75, 220.00, false, mercado);
        Jogador coentrao = new Jogador("Fabio Coentrao", "Lateral", "Português", 77, 77, 55, 280.00, false, mercado);
        Jogador khedira = new Jogador("Sami Khedira ", "Meia", "Alemão", 73, 75, 65, 650.00, true, mercado);
        Jogador diMaria = new Jogador("Angel Di Maria ", "Meia", "Argentino", 75, 77, 42, 150.00, false, mercado);
        Jogador essien = new Jogador("Michael Essien", "Meia", "Ganês", 80, 72, 79, 300.00, false, mercado);
        Jogador modric = new Jogador("Luka Modric", "Meia", "Croata", 76, 74, 76, 450.00, true, mercado);
        Jogador kaka = new Jogador("Kaka", "Meia", "Brasilerio", 92, 93, 54, 350.00, false, mercado);
        Jogador ozil = new Jogador("Mesut Ozil", "Meia", "Alemão", 80, 80, 45, 250.00, false, mercado);
        Jogador xabiAlonso = new Jogador("Xabi Alonso", "Meia", "Espanhol", 92, 75, 75, 300.00, false, mercado);
        Jogador higuain = new Jogador("Gonzalo Higuain", "Atacante", "Argentino", 86, 93, 42, 400.00, false, mercado);
        Jogador morata = new Jogador("Morata", "Atacante", "Espanhol", 85, 88, 40, 300.00, true, mercado);
        Jogador cr7 = new Jogador("Cristiano Ronaldo", "Atacante", "Português", 98, 97, 38, 600.00, false, mercado);
        Jogador benzema = new Jogador("Karim Benzema", "Atacante", "Francês", 84, 85, 39, 320.00, false, mercado);

        // Time Titular
        ArrayList<Jogador> titulares = addTitulares(casillas, rCarvaho, pepe, marcelo, sRamos, essien, kaka, ozil, xabiAlonso, cr7, higuain);
        // Time Reserva
        ArrayList<Jogador> reservas = addReservas(diegoLopes, rAlbiol, coentrao, khedira, diMaria, modric, morata, benzema);
        // Técnico
        Tecnico mourinho = new Tecnico("Jose Mourinho");
        // Clube
        Clube realMadrid = new Clube("Real Madrid", mourinho, titulares, reservas, 70000000.00);
        mourinho.setClubeQueDirige(realMadrid);
        return realMadrid;
    }

    /*
     * Método responsável por criar o Clube Atletico de Madrid,
     * desde seus jogadores titulares e reservas,
     * incluindo o técnico e o clube em si,
     * retorna o Clube Criado.
     */
    private Clube criaAtleticoDeMadrid() {
        //Jogadores
        Jogador deGea = new Jogador("De Gea", "Goleiro", "Espanhol", 73, 35, 80, 300.00, false, mercado);
        Jogador joel = new Jogador("Joel", "Goleiro", "Belga", 71, 30, 68, 200.00, true, mercado);
        Jogador diegoGodin = new Jogador("Diego Godin", "Zagueiro", "Uruguaio", 77, 56, 82, 220.00, true, mercado);
        Jogador casquito = new Jogador("Casquito", "Zagueiro", "Argentino", 79, 60, 86, 350.00, false, mercado);
        Jogador aDominguez = new Jogador("A. Dominguez", "Zagueiro", "Espanhol", 79, 59, 76, 100.00, false, mercado);
        Jogador filipe = new Jogador("Filipe", "Lateral", "Brasileiro", 86, 75, 63, 250.00, false, mercado);
        Jogador cataDiaz = new Jogador("Cata Diaz", "Lateral", "Argentino", 82, 59, 84, 220.00, false, mercado);
        Jogador antonioLopez = new Jogador("Antonio Lopez", "Lateral", "Português", 83, 75, 69, 280.00, false, mercado);
        Jogador marioSuarez = new Jogador("Mario Suarez", "Meia", "Espanhol", 70, 70, 69, 650.00, true, mercado);
        Jogador koke = new Jogador("Koke", "Meia", "Espanhol", 66, 68, 65, 150.00, false, mercado);
        Jogador ardaTuran = new Jogador("Arda Turan", "Meia", "Turco", 78, 78, 42, 300.00, false, mercado);
        Jogador gabi = new Jogador("Gabi", "Meia", "Espanhol", 71, 69, 64, 450.00, true, mercado);
        Jogador raulGarcia = new Jogador("Raul Garcia", "Meia", "Espanhol", 79, 75, 70, 350.00, false, mercado);
        Jogador tiago = new Jogador("Tiago", "Meia", "Portugues", 74, 72, 68, 250.00, false, mercado);
        Jogador cristianRodrigues = new Jogador("Cristian Rodrigues", "Meia", "Uruguaio", 87, 82, 70, 300.00, false, mercado);
        Jogador falcao = new Jogador("Radamel Falcao", "Atacante", "Colombiano", 91, 88, 33, 400.00, false, mercado);
        Jogador adrian = new Jogador("Adrian", "Atacante", "Espanhol", 87, 93, 44, 300.00, false, mercado);
        Jogador diegoCosta = new Jogador("Diego Costa", "Atacante", "Brasileiro", 70, 80, 35, 600.00, false, mercado);
        Jogador pedroMartin = new Jogador("Pedro Martin", "Atacante", "Espanhol", 61, 66, 35, 320.00, true, mercado);

        // Time Titular
        ArrayList<Jogador> titulares = addTitulares(deGea, aDominguez, casquito, filipe, antonioLopez, ardaTuran, raulGarcia, tiago, cristianRodrigues, falcao, adrian);
        // Time Reserva
        ArrayList<Jogador> reservas = addReservas(joel, diegoGodin, cataDiaz, marioSuarez, koke, gabi, diegoCosta, pedroMartin);
        // Técnico
        Tecnico diegoSimeone = new Tecnico("Diego Simeone");
        // Clube
        Clube atleticoDeMadrid = new Clube("Atletico de Madrid", diegoSimeone, titulares, reservas, 70000000.00);
        diegoSimeone.setClubeQueDirige(atleticoDeMadrid);
        return atleticoDeMadrid;
    }

    /*
     * Método responsável por criar o Clube Valencia,
     * desde seus jogadores titulares e reservas,
     * incluindo o técnico e o clube em si,
     * retorna o Clube Criado.
     */
    private Clube criaValencia() {
        //Jogadores
        Jogador diegoAlves = new Jogador("Diego Alves", "Goleiro", "Brasileiro", 80, 30, 84, 300.00, false, mercado);
        Jogador guaita = new Jogador("Guaita", "Goleiro", "Espanhol", 71, 30, 72, 200.00, true, mercado);
        Jogador ricardoCosta = new Jogador("Ricardo Costa", "Zagueiro", "Portugues", 70, 56, 78, 220.00, true, mercado);
        Jogador alyCissokho = new Jogador("Aly Cissokho", "Zagueiro", "Frances", 80, 52, 83, 350.00, false, mercado);
        Jogador joaoPereira = new Jogador("Joao Pereira", "Zagueiro", "Portugues", 74, 53, 80, 100.00, false, mercado);
        Jogador carlosDelgado = new Jogador("Carlos Delgado", "Lateral", "Espanhol", 81, 70, 72, 250.00, false, mercado);
        Jogador oreiaSeca = new Jogador("Oreia Seca", "Lateral", "Argentino", 81, 52, 83, 220.00, false, mercado);
        Jogador jeremyMathieu = new Jogador("Jeremy Mathieu", "Lateral", "Frances", 79, 73, 63, 280.00, true, mercado);
        Jogador everBanega = new Jogador("Ever Banega", "Meia", "Argentino", 78, 75, 68, 650.00, false, mercado);
        Jogador andresGuardado = new Jogador("Andres Guardado", "Meia", "Mexicano", 75, 63, 76, 150.00, true, mercado);
        Jogador albelda = new Jogador("Albelda", "Meia", "Espanha", 72, 60, 80, 300.00, true, mercado);
        Jogador parejo = new Jogador("Parejo", "Meia", "Espanhol", 80, 75, 40, 450.00, false, mercado);
        Jogador sofiane = new Jogador("Sofiane Feghouli", "Meia", "Frances", 71, 82, 46, 350.00, false, mercado);
        Jogador canales = new Jogador("Canales", "Meia", "Espanhol", 81, 81, 40, 250.00, false, mercado);
        Jogador juanBernat = new Jogador("Juan Bernat", "Meia", "Espanhol", 84, 78, 50, 300.00, false, mercado);
        Jogador jonas = new Jogador("Jonas Matador", "Atacante", "Brasileiro", 87, 87, 55, 400.00, false, mercado);
        Jogador soldado = new Jogador("Soldado", "Atacante", "Espanhol", 77, 86, 32, 300.00, false, mercado);
        Jogador pabloPiatti = new Jogador("Pablo Piatti", "Atacante", "Argentino", 80, 84, 44, 600.00, false, mercado);
        Jogador jonathanViera = new Jogador("Jonathan Viera", "Atacante", "Espanhol", 76, 76, 43, 320.00, false, mercado);

        // Time Titular
        ArrayList<Jogador> titulares = addTitulares(diegoAlves, alyCissokho, joaoPereira, carlosDelgado, oreiaSeca, everBanega, parejo, canales, juanBernat, jonas, pabloPiatti);
        // Time Reserva
        ArrayList<Jogador> reservas = addReservas(guaita, ricardoCosta, jeremyMathieu, andresGuardado, albelda, sofiane, soldado, jonathanViera);
        // Técnico
        Tecnico ernestoValverde = new Tecnico("Ernesto Valverde");
        // Clube
        Clube valencia = new Clube("Valencia", ernestoValverde, titulares, reservas, 70000000.00);
        ernestoValverde.setClubeQueDirige(valencia);
        return valencia;
    }

    /*
     * Método responsável por criar o Clube Real Sociedad,
     * desde seus jogadores titulares e reservas,
     * incluindo o técnico e o clube em si,
     * retorna o Clube Criado.
     */
    private Clube criaRealSociedad() {
        //Jogadores
        Jogador claudioBravo = new Jogador("Claudio Bravo", "Goleiro", "Espanhol", 81, 35, 87, 300.00, false, mercado);
        Jogador zubikarai = new Jogador("Zubikarai", "Goleiro", "Espanhol", 75, 30, 80, 200.00, false, mercado);
        Jogador carlosMartinez = new Jogador("Carlos Martinez", "Zagueiro", "Espanhol", 80, 56, 84, 220.00, false, mercado);
        Jogador mikelGonzalez = new Jogador("Mikel Gonzalez", "Zagueiro", "Espanhol", 78, 63, 84, 350.00, false, mercado);
        Jogador iagoMartinez = new Jogador("Iago Martinez", "Zagueiro", "Espanhol", 81, 65, 77, 100.00, false, mercado);
        Jogador joseAngel = new Jogador("Jose Angel", "Lateral", "Espanhol", 82, 74, 77, 250.00, false, mercado);
        Jogador cadamuro = new Jogador("Liassine Cadamuro", "Lateral", "Frances", 77, 70, 70, 220.00, false, mercado);
        Jogador delabella = new Jogador("De la Bella", "Lateral", "Espanhol", 84, 72, 67, 280.00, false, mercado);
        Jogador elustondo = new Jogador("Elustondo", "Meia", "Espanhol", 79, 65, 75, 650.00, true, mercado);
        Jogador markelBergara = new Jogador("Markel Bergara", "Meia", "Espanhol", 80, 75, 65, 150.00, false, mercado);
        Jogador asier = new Jogador("Asier Illarramendi", "Meia", "Espanha", 79, 76, 45, 300.00, false, mercado);
        Jogador xabiPietro = new Jogador("Xabi Pietro", "Meia", "Espanhol", 81, 80, 42, 450.00, false, mercado);
        Jogador rubenPardo = new Jogador("Ruben Pardo", "Meia", "Espanhol", 67, 63, 75, 350.00, false, mercado);
        Jogador zurutuza = new Jogador("Zurutuza", "Meia", "Espanhol", 66, 65, 70, 250.00, false, mercado);
        Jogador choriCastro = new Jogador("Chori Castro", "Meia", "Uruguaio", 78, 74, 42, 300.00, false, mercado);
        Jogador antonieGriezman = new Jogador("Antoine Griezman", "Atacante", "Frances", 61, 68, 68, 400.00, false, mercado);
        Jogador agirretxe = new Jogador("Agirretxe", "Atacante", "Espanhol", 82, 84, 40, 300.00, false, mercado);
        Jogador carlosVela = new Jogador("Carlos Vela", "Atacante", "Espanhol", 83, 86, 44, 600.00, false, mercado);
        Jogador diegoIfran = new Jogador("Diego Ifran", "Atacante", "Uruguaio", 74, 74, 63, 320.00, false, mercado);

        // Time Titular
        ArrayList<Jogador> titulares = addTitulares(claudioBravo, carlosMartinez, iagoMartinez, joseAngel, delabella, elustondo, markelBergara, asier, xabiPietro, agirretxe, carlosVela);
        // Time Reserva
        ArrayList<Jogador> reservas = addReservas(zubikarai, mikelGonzalez, cadamuro, rubenPardo, zurutuza, choriCastro, antonieGriezman, diegoIfran);
        // Técnico
        Tecnico philippeMontanier = new Tecnico("Philippe Montanier");
        // Clube
        Clube realSociedad = new Clube("Real Sociedad", philippeMontanier, titulares, reservas, 70000000.00);
        philippeMontanier.setClubeQueDirige(realSociedad);
        return realSociedad;
    }

    /*
     * Método responsável por criar o Clube VillaReal,
     * desde seus jogadores titulares e reservas,
     * incluindo o técnico e o clube em si,
     * retorna o Clube Criado.
     */
    private Clube criaVillaReal() {
        //Jogadores
        Jogador oliva = new Jogador("Oliva", "Goleiro", "Chileno", 74, 30, 86, 300.00, false, mercado);
        Jogador xonho = new Jogador("Xonho", "Goleiro", "Brasileiro", 84, 45, 98, 200.00, false, mercado);
        Jogador javiVenta = new Jogador("Javi Venta", "Zagueiro", "Espanhol", 81, 58, 83, 220.00, false, mercado);
        Jogador olof = new Jogador("Olof Mellberg", "Zagueiro", "Sueco", 72, 55, 75, 350.00, false, mercado);
        Jogador dorado = new Jogador("Dorado", "Zagueiro", "Espanhol", 76, 60, 72, 100.00, false, mercado);
        Jogador arex = new Jogador("Arex", "Lateral", "Brasileiro", 73, 76, 63, 250.00, false, mercado);
        Jogador mulita = new Jogador("Mulita", "Lateral", "Ganes", 76, 70, 59, 220.00, false, mercado);
        Jogador capdevilla = new Jogador("Capdevilla", "Lateral", "Espanhol", 81, 72, 73, 280.00, false, mercado);
        Jogador cazorla = new Jogador("Cazorla", "Meia", "Espanhol", 83, 82, 53, 650.00, true, mercado);
        Jogador valero = new Jogador("B. Valero", "Meia", "Espanhol", 71, 76, 59, 150.00, false, mercado);
        Jogador bruno = new Jogador("Bruno", "Meia", "Portugal", 71, 66, 72, 300.00, false, mercado);
        Jogador cani = new Jogador("Cani", "Meia", "Canada", 73, 77, 47, 450.00, false, mercado);
        Jogador marcosSenna = new Jogador("Marcos Senna", "Meia", "Brasileiro", 83, 75, 76, 350.00, false, mercado);
        Jogador matilla = new Jogador("Matilla", "Meia", "Espanhol", 65, 70, 5, 250.00, false, mercado);
        Jogador cristobal = new Jogador("Cristóbal", "Meia", "Espanhol", 66, 69, 45, 300.00, false, mercado);
        Jogador nilmar = new Jogador("Nilmar", "Atacante", "Brasileiro", 79, 85, 35, 400.00, false, mercado);
        Jogador rossi = new Jogador("Rossi", "Atacante", "Espanhol", 77, 85, 35, 300.00, false, mercado);
        Jogador nielse = new Jogador("Nielse", "Atacante", "Croata", 54, 68, 31, 600.00, false, mercado);
        Jogador marcoRuben = new Jogador("Marco Ruben", "Atacante", "Uruguaio", 70, 77, 40, 320.00, false, mercado);
        // Time Titular
        ArrayList<Jogador> titulares = addTitulares(xonho, javiVenta, olof, mulita, capdevilla, cazorla, cani, marcosSenna, valero, nilmar, rossi);
        // Time Reserva
        ArrayList<Jogador> reservas = addReservas(oliva, dorado, arex, bruno, matilla, cristobal, nielse, marcoRuben);
        // Técnico
        Tecnico antoni = new Tecnico("Antoni Sganzerla");
        // Clube
        Clube villaReal = new Clube("Villa Real", antoni, titulares, reservas, 70000000.00);
        antoni.setClubeQueDirige(villaReal);
        return villaReal;
    }

    /*
     * Método responsável por criar o Clube Real Betis,
     * desde seus jogadores titulares e reservas,
     * incluindo o técnico e o clube em si,
     * retorna o Clube Criado.
     */
    private Clube criaRealBetis() {
        //Jogadores
        Jogador casto = new Jogador("Casto", "Goleiro", "Espanhol", 81, 30, 80, 300.00, false, mercado);
        Jogador adrian = new Jogador("Adrian", "Goleiro", "Espanhol", 78, 35, 77, 200.00, false, mercado);
        Jogador chica = new Jogador("Chica", "Zagueiro", "Espanhol", 70, 66, 68, 220.00, false, mercado);
        Jogador mario = new Jogador("Mario", "Zagueiro", "Espanhol", 71, 63, 75, 350.00, false, mercado);
        Jogador amaya = new Jogador("Amaya", "Zagueiro", "Espanhol", 68, 63, 73, 100.00, false, mercado);
        Jogador paulao = new Jogador("Paulão", "Lateral", "Brasileiro", 82, 81, 70, 250.00, false, mercado);
        Jogador damienPerquis = new Jogador("Damien Perquis", "Lateral", "Polones", 74, 72, 72, 220.00, false, mercado);
        Jogador sergio = new Jogador("Sergio", "Lateral", "Espanhol", 74, 67, 58, 280.00, false, mercado);
        Jogador alex = new Jogador("Alex", "Meia", "Espanhol", 61, 66, 66, 650.00, true, mercado);
        Jogador rubenPerez = new Jogador("Rubén Pérez", "Meia", "Espanhol", 67, 73, 60, 150.00, false, mercado);
        Jogador Benat = new Jogador("Beñat", "Meia", "Portugal", 71, 75, 37, 300.00, false, mercado);
        Jogador salvaSevilla = new Jogador("Salva Sevilla", "Meia", "Canada", 71, 77, 57, 450.00, false, mercado);
        Jogador emanuelIgiebor = new Jogador("Emanuel Igiebor", "Meia", "Nigeriano", 82, 83, 47, 350.00, false, mercado);
        Jogador canas = new Jogador("Cañas", "Meia", "Espanhol", 72, 74, 41, 250.00, false, mercado);
        Jogador dorlanPabón = new Jogador("Dorlan Pabón", "Meia", "Colombiano", 80, 80, 40, 300.00, false, mercado);
        Jogador pozuelo = new Jogador("Pozuelo", "Atacante", "Espanhol", 73, 81, 38, 400.00, false, mercado);
        Jogador joelCampbell = new Jogador("Joel Campbell", "Atacante", "Costa Riquenho", 73, 77, 35, 300.00, false, mercado);
        Jogador guillermoMolins = new Jogador("Guillermo Molins", "Atacante", "Sueco", 75, 82, 40, 400.00, false, mercado);
        Jogador jorgeMolina = new Jogador("Jorge Molina", "Atacante", "Espanhol", 56, 69, 31, 320.00, false, mercado);

        // Time Titular
        ArrayList<Jogador> titulares = addTitulares(casto, chica, mario, paulao, damienPerquis, emanuelIgiebor, salvaSevilla, Benat, dorlanPabón, guillermoMolins, joelCampbell);
        // Time Reserva
        ArrayList<Jogador> reservas = addReservas(adrian, amaya, sergio, alex, rubenPerez, canas, pozuelo, jorgeMolina);
        // Técnico
        Tecnico pepeMel = new Tecnico("Pepe Mel");
        // Clube
        Clube RealBetis = new Clube("Real Betis", pepeMel, titulares, reservas, 60000000.00);
        pepeMel.setClubeQueDirige(RealBetis);
        return RealBetis;
    }

    /*
     * Método responsável por criar o Clube Osasuna,
     * desde seus jogadores titulares e reservas,
     * incluindo o técnico e o clube em si,
     * retorna o Clube Criado.
     */
    private Clube criaOsasuna() {
        //Jogadores
        Jogador ricardo = new Jogador("Ricardo", "Goleiro", "Espanhol", 80, 30, 88, 300.00, false, mercado);
        Jogador riesgo = new Jogador("Riesgo", "Goleiro", "Espanhol", 76, 30, 80, 200.00, false, mercado);
        Jogador marcBertran = new Jogador("Marc Bertrán", "Zagueiro", "Espanhol", 73, 60, 78, 220.00, false, mercado);
        Jogador ruben = new Jogador("Rubén", "Zagueiro", "Espanhol", 74, 5, 83, 350.00, false, mercado);
        Jogador miguelFlano = new Jogador("Miguel Flaño", "Zagueiro", "Espanhol", 72, 60, 75, 100.00, false, mercado);
        Jogador lolo = new Jogador("Lolo", "Lateral", "Espanhol", 77, 73, 63, 250.00, false, mercado);
        Jogador arribas = new Jogador("Arribas", "Lateral", "Espanhol", 76, 70, 65, 220.00, false, mercado);
        Jogador oier = new Jogador("Oier", "Lateral", "Espanhol", 75, 70, 65, 280.00, false, mercado);
        Jogador deLasCuervas = new Jogador("De las Cuevas", "Meia", "Espanhol", 71, 73, 68, 650.00, true, mercado);
        Jogador masoudShojaei = new Jogador("Masoud Shojaei", "Meia", "Iraniano", 70, 75, 63, 150.00, false, mercado);
        Jogador punal = new Jogador("Puñal", "Meia", "Espanhol", 70, 75, 45, 300.00, false, mercado);
        Jogador sisi = new Jogador("Sisi", "Meia", "Canada", 75, 75, 50, 450.00, false, mercado);
        Jogador alvariCejudo = new Jogador("Álvaro Cejudo", "Meia", "Espanhol", 72, 76, 55, 350.00, false, mercado);
        Jogador nano = new Jogador("Nano", "Meia", "Espanhol", 73, 63, 77, 250.00, false, mercado);
        Jogador franciscoSilva = new Jogador("Francisco Silva", "Meia", "CEspanhol", 70, 73, 55, 300.00, false, mercado);
        Jogador galan = new Jogador("Galán", "Atacante", "Espanhol", 71, 81, 35, 400.00, false, mercado);
        Jogador sola = new Jogador("Sola", "Atacante", "Espanhol", 73, 78, 37, 300.00, false, mercado);
        Jogador emiliano = new Jogador("Emiliano Armenteros", "Atacante", "Espanhol", 68, 73, 33, 400.00, false, mercado);
        Jogador lorente = new Jogador("Lorente", "Atacante", "Espanhol", 78, 80, 38, 420.00, false, mercado);

        // Time Titular
        ArrayList<Jogador> titulares = addTitulares(ricardo, marcBertran, ruben, lolo, arribas, nano, alvariCejudo, sisi, deLasCuervas, sola, lorente);
        // Time Reserva
        ArrayList<Jogador> reservas = addReservas(riesgo, miguelFlano, oier, masoudShojaei, punal, franciscoSilva, galan, emiliano);
        // Técnico
        Tecnico joseLuis = new Tecnico("Jose Luis Mendilibar");
        // Clube
        Clube Osasuna = new Clube("Osasuna", joseLuis, titulares, reservas, 60000000.00);
        joseLuis.setClubeQueDirige(Osasuna);
        return Osasuna;
    }
    /*
     * Método responsável por ordenar os jogadores
     * em um ArrayList, definindo quais serão
     * os titulares. Método retorna este ArrayList
     */

    private ArrayList<Jogador> addTitulares(Jogador gol, Jogador zag1, Jogador zag2, Jogador lat1, Jogador lat2, Jogador meia1, Jogador meia2, Jogador meia3, Jogador meia4, Jogador atac1, Jogador atac2) {
        ArrayList<Jogador> titulares = new ArrayList<>();
        titulares.add(gol);
        titulares.add(zag1);
        titulares.add(zag2);
        titulares.add(lat1);
        titulares.add(lat2);
        titulares.add(meia1);
        titulares.add(meia2);
        titulares.add(meia3);
        titulares.add(meia4);
        titulares.add(atac1);
        titulares.add(atac2);
        return titulares;
    }

    /*
     * Método responsável por ordenar os jogadores
     * em um ArrayList, definindo quais serão
     * os reservas. Método retorna este ArrayList
     */
    private ArrayList<Jogador> addReservas(Jogador gol, Jogador zag, Jogador lat, Jogador meia1, Jogador meia2, Jogador meia3, Jogador atac1, Jogador atac2) {
        ArrayList<Jogador> reservas = new ArrayList<>();
        reservas.add(gol);
        reservas.add(zag);
        reservas.add(lat);
        reservas.add(meia1);
        reservas.add(meia2);
        reservas.add(meia3);
        reservas.add(atac1);
        reservas.add(atac2);
        return reservas;
    }

    /**
     * @return the clubes
     */
    public ArrayList<Clube> getClubes() {
        return clubes;
    }

    public MercadoDeTransferencias getMercado() {
        return mercado;
    }
}
